﻿
Partial Class Interfaz_frmSistemaAdminGrupos
    Inherits System.Web.UI.Page
    Dim CL As New Logica.ModuloSistema.ControladorLogica

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CL = Logica.ModuloSistema.ControladorLogica.getInstance

        If CL.visibilidadesFormsInternos("Sistema", Session("user").ToString) = False Then
            Response.Redirect("Index.aspx")
        End If
        Dim ArrayUsuarios As New ArrayList
        Dim ArrayGrupo As New ArrayList
        Dim i As Integer

        ArrayUsuarios = CL.ObtenerUsuario()
        ArrayGrupo = CL.ObtenerGrupo()

        If Not Page.IsPostBack Then
            For i = 0 To ArrayUsuarios.Count - 1
                Dim itemUser As New ListItem

                itemUser.Value = DirectCast(ArrayUsuarios.Item(i), Usuario).ID
                itemUser.Text = DirectCast(ArrayUsuarios.Item(i), Usuario).User

                Me.DropUserSistema.Items.Add(itemUser)
            Next

            For i = 0 To ArrayGrupo.Count - 1
                Dim itemGrupo As New ListItem

                itemGrupo.Value = DirectCast(ArrayGrupo.Item(i), GrupoUsuario).Id
                itemGrupo.Text = DirectCast(ArrayGrupo.Item(i), GrupoUsuario).nombreGrupo

                Me.DropGrupos.Items.Add(itemGrupo)
            Next
        End If
    End Sub

#Region "Funciones"

    Private Sub CargarUsuariosGrupo()
        Try
            Dim ArrayUsuariosGrupo As New ArrayList
            Dim i As Integer
            ArrayUsuariosGrupo = CL.ObtenerUsuariosCriterio(Me.DropGrupos.SelectedValue)

            If ArrayUsuariosGrupo.Count = 0 Then
                Console.Write("No existen usuarios asociados al grupo seleccionado")
            Else
                For i = 0 To ArrayUsuariosGrupo.Count - 1
                    Dim itemUsuario As New ListItem

                    itemUsuario.Value = DirectCast(ArrayUsuariosGrupo.Item(i), Usuario).ID
                    itemUsuario.Text = DirectCast(ArrayUsuariosGrupo.Item(i), Usuario).User

                    ListUserGroup.Items.Add(itemUsuario)
                Next
            End If
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub

    Private Sub DeleteUsuarios()
        Try
            Dim nombreUser As String = ""
            Dim i As Integer
            For i = 0 To Me.DeleteUser.Items.Count - 1
                nombreUser = Me.DeleteUser.Items(i).ToString
                CL.ResetGroupUser(nombreUser)
            Next

            If Me.DeleteUser.Items.Count <> 0 Then
                Console.Write("Usuarios Eliminados del Grupo")
            End If
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub

    Private Sub AgregarUsuariosDelete()
        Try
            If ListUserGroup.Text <> "" Then
                Dim removeList As New ListItem

                removeList.Text = ListUserGroup.SelectedItem.Text
                removeList.Value = ListUserGroup.SelectedValue

                Me.DeleteUser.Items.Add(removeList)
                Me.ListUserGroup.Items.Remove(ListUserGroup.SelectedItem)
            End If
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub

    Private Sub AgregarUsuarios()
        Try
            Dim fkGrupoUser As String
            Dim idGrupo As String
            Dim indicador As Integer = 0

            idGrupo = DirectCast(CL.ObtenerGrupo(Me.DropGrupos.SelectedValue).Item(0), GrupoUsuario).Id
            fkGrupoUser = DirectCast(CL.ObtenerUsuariosCriterio(Me.DropUserSistema.SelectedValue).Item(0), Usuario).Grupo

            If (fkGrupoUser = idGrupo) Then
                Console.Write("El usuario ya pertenece al grupo")
            Else
                Dim nuevoList As New ListItem

                nuevoList.Text = Me.DropUserSistema.SelectedItem.Text
                nuevoList.Value = Me.DropUserSistema.SelectedValue

                For i As Integer = 0 To ListUserGroup.Items.Count - 1
                    Dim ValorList As String = ListUserGroup.Items(i).Text
                    Dim valorNuevo As String = nuevoList.Text

                    If ValorList = valorNuevo Then
                        indicador = 1
                    End If
                Next

                If indicador <> 1 Then
                    Me.ListUserGroup.Items.Add(nuevoList)
                End If

            End If
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
       
    End Sub

    Private Sub addUser()
        Try
            Dim idGrupo As String
            Dim nombreUsuario As String
            Dim i As Integer

            idGrupo = Me.DropGrupos.SelectedValue

            For i = 0 To Me.ListUserGroup.Items.Count - 1
                nombreUsuario = Me.ListUserGroup.Items(i).ToString
                CL.ActualizarUsuario(nombreUsuario, idGrupo)
            Next
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub
#End Region

#Region "Botones"
    Protected Sub BtnVer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnVer.Click
        Me.ListUserGroup.Items.Clear()
        Me.CargarUsuariosGrupo()
    End Sub

    Protected Sub BtnAddUser_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAddUser.Click
        AgregarUsuarios()
    End Sub

    Protected Sub BtnMove_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnMove.Click
        AgregarUsuariosDelete()
    End Sub

    Protected Sub BtnValidar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnValidar.Click
        DeleteUsuarios()
        Me.DeleteUser.Items.Clear()
        addUser()
        Me.ListUserGroup.Items.Clear()

    End Sub
#End Region


End Class
